/**
 * javaHispano 2008
 */
package org.javahispano.jwitter.domain;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author javaHispano
 * Entidad con los datos de los usuarios
 * Mapea a la tabla llamada users, siguiendo la convencion de SpringSecurity
 */
@Entity
@Table(name="users")
public class Usuario implements Serializable {

	
	private static final long serialVersionUID = 6250140376890257046L;
	
	@Id	
	private String username;
	
	private String nombre;
	
	private String apellidos;
	
	private String lugar;
	
	private String email;
	
	private String password;
	
	private boolean enabled;		
	
	@Temporal(TemporalType.DATE)
	private Date fechaRegistro;
	
	@OneToMany(mappedBy="usuario", cascade={CascadeType.ALL})	
	private Collection<Authority> authorities;

	public Date getFechaRegistro() {
		return fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public String getLugar() {
		return lugar;
	}

	public void setLugar(String lugar) {
		this.lugar = lugar;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer("[Usuario]");
		buffer.append("username:")
			.append(username)
			.append(", nombre")
			.append(nombre)
			.append(", apellidos:")
			.append(apellidos)
			.append(", lugar:")
			.append(lugar)
			.append(", password:")
			.append(password)
			.append(", fechaRegistro:")			
			.append(fechaRegistro)
			.append(", enabled:")
			.append(enabled)
			.append("[Usuario]");								
		return buffer.toString();
	}

	public boolean isEnabled() {
		return enabled;
	}

	public void setEnabled(boolean enabled) {
		this.enabled = enabled;
	}

	public Collection<Authority> getAuthorities() {
		return authorities;
	}

	public void setAuthorities(Collection<Authority> authorities) {
		this.authorities = authorities;
	}
}
